"""
GT-LMS System Custom Exception Classes
This module defines all custom exceptions used in the system
"""

class LMSException(Exception):
    """Base exception for all LMS-related exceptions"""
    def __init__(self, message: str = "An error occurred in the LMS system"):
        self.message = message
        super().__init__(self.message)


class AuthenticationException(LMSException):
    """Exception raised for authentication-related errors"""
    def __init__(self, message: str = "Authentication failed"):
        super().__init__(message)


class EnrollmentException(LMSException):
    """Exception raised for enrollment-related errors"""
    def __init__(self, message: str = "Enrollment error occurred"):
        super().__init__(message)


class CourseException(LMSException):
    """Exception raised for course-related errors"""
    def __init__(self, message: str = "Course error occurred"):
        super().__init__(message)


class GradeException(LMSException):
    """Exception raised for grading-related errors"""
    def __init__(self, message: str = "Grading error occurred"):
        super().__init__(message)


class SubmissionException(LMSException):
    """Exception raised for submission-related errors"""
    def __init__(self, message: str = "Submission error occurred"):
        super().__init__(message)


class PermissionException(LMSException):
    """Exception raised for permission-related errors"""
    def __init__(self, message: str = "Permission denied"):
        super().__init__(message)